package com.ruoyi.ldzlsb.service;

import java.util.List;
import com.ruoyi.ldzlsb.domain.SbRepairOrder;

/**
 * 设备报修单Service接口
 * 
 * @author anli
 * @date 2025-01-11
 */
public interface ISbRepairOrderService 
{
    /**
     * 查询设备报修单
     * 
     * @param repairId 设备报修单主键
     * @return 设备报修单
     */
    public SbRepairOrder selectSbRepairOrderByRepairId(Long repairId);

    /**
     * 查询设备报修单列表
     * 
     * @param sbRepairOrder 设备报修单
     * @return 设备报修单集合
     */
    public List<SbRepairOrder> selectSbRepairOrderList(SbRepairOrder sbRepairOrder);

    /**
     * 新增设备报修单
     * 
     * @param sbRepairOrder 设备报修单
     * @return 结果
     */
    public int insertSbRepairOrder(SbRepairOrder sbRepairOrder);

    /**
     * 修改设备报修单
     * 
     * @param sbRepairOrder 设备报修单
     * @return 结果
     */
    public int updateSbRepairOrder(SbRepairOrder sbRepairOrder);

    /**
     * 批量删除设备报修单
     * 
     * @param repairIds 需要删除的设备报修单主键集合
     * @return 结果
     */
    public int deleteSbRepairOrderByRepairIds(Long[] repairIds);

    /**
     * 删除设备报修单信息
     * 
     * @param repairId 设备报修单主键
     * @return 结果
     */
    public int deleteSbRepairOrderByRepairId(Long repairId);

    /**
     * 根据报修单号查询设备报修单
     * 
     * @param repairCode 报修单号
     * @return 设备报修单
     */
    public SbRepairOrder selectSbRepairOrderByRepairCode(String repairCode);

    /**
     * 根据设备ID查询报修单列表
     * 
     * @param equipmentId 设备ID
     * @return 设备报修单集合
     */
    public List<SbRepairOrder> selectSbRepairOrderByEquipmentId(Long equipmentId);

    /**
     * 生成报修单号
     * 
     * @return 报修单号
     */
    public String generateRepairCode();

    /**
     * 处理报修单
     * 
     * @param sbRepairOrder 设备报修单
     * @return 结果
     */
    public int handleSbRepairOrder(SbRepairOrder sbRepairOrder);

    /**
     * 关闭报修单
     * 
     * @param repairId 报修单ID
     * @return 结果
     */
    public int closeSbRepairOrder(Long repairId);

    /**
     * 根据报修单来源查询维修单
     * 
     * @param sourceCode 报修单编号
     * @return 设备维修单
     */
    public SbRepairOrder selectSbRepairOrderBySourceCode(String sourceCode);
    
    /**
     * 完成维修
     * 
     * @param sbRepairOrder 设备维修单
     * @return 结果
     */
    public int completeSbRepairOrder(SbRepairOrder sbRepairOrder);
    
    /**
     * 取消维修单
     * 
     * @param repairId 维修单ID
     * @param reason 取消原因
     * @return 结果
     */
    public int cancelSbRepairOrder(Long repairId, String reason);
} 